package com.ruoyi.system.service.impl;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.ruoyi.system.domain.RoleTalentPermission;
import com.ruoyi.system.mapper.RoleTalentPermissionMapper;
import com.ruoyi.system.service.IRoleTalentPermissionService;

/**
 * 角色人才库字段权限 服务层处理
 * 
 * @author ruoyi
 */
@Service
public class RoleTalentPermissionServiceImpl implements IRoleTalentPermissionService
{
    @Autowired
    private RoleTalentPermissionMapper roleTalentPermissionMapper;

    /**
     * 查询角色人才库字段权限列表
     * 
     * @param roleTalentPermission 角色人才库字段权限
     * @return 角色人才库字段权限集合
     */
    @Override
    public List<RoleTalentPermission> selectRoleTalentPermissionList(RoleTalentPermission roleTalentPermission)
    {
        return roleTalentPermissionMapper.selectRoleTalentPermissionList(roleTalentPermission);
    }

    /**
     * 通过ID查询角色人才库字段权限
     * 
     * @param id 主键ID
     * @return 角色人才库字段权限对象
     */
    @Override
    public RoleTalentPermission selectRoleTalentPermissionById(Long id)
    {
        return roleTalentPermissionMapper.selectRoleTalentPermissionById(id);
    }

    /**
     * 通过角色ID和表名查询权限列表
     * 
     * @param roleId 角色ID
     * @param templateTable 模板表名
     * @return 权限列表
     */
    @Override
    public List<RoleTalentPermission> selectPermissionsByRoleAndTable(Long roleId, String templateTable)
    {
        return roleTalentPermissionMapper.selectPermissionsByRoleAndTable(roleId, templateTable);
    }

    /**
     * 新增角色人才库字段权限
     * 
     * @param roleTalentPermission 角色人才库字段权限
     * @return 结果
     */
    @Override
    public int insertRoleTalentPermission(RoleTalentPermission roleTalentPermission)
    {
        return roleTalentPermissionMapper.insertRoleTalentPermission(roleTalentPermission);
    }

    /**
     * 修改角色人才库字段权限
     * 
     * @param roleTalentPermission 角色人才库字段权限
     * @return 结果
     */
    @Override
    public int updateRoleTalentPermission(RoleTalentPermission roleTalentPermission)
    {
        return roleTalentPermissionMapper.updateRoleTalentPermission(roleTalentPermission);
    }

    /**
     * 删除角色人才库字段权限
     * 
     * @param id 主键ID
     * @return 结果
     */
    @Override
    public int deleteRoleTalentPermissionById(Long id)
    {
        return roleTalentPermissionMapper.deleteRoleTalentPermissionById(id);
    }

    /**
     * 批量删除角色人才库字段权限
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    @Transactional
    public int deleteRoleTalentPermissionByIds(Long[] ids)
    {
        return roleTalentPermissionMapper.deleteRoleTalentPermissionByIds(ids);
    }

    /**
     * 批量保存角色权限
     * 
     * @param roleId 角色ID
     * @param templateTable 模板表名
     * @param permissions 权限列表
     * @return 结果
     */
    @Override
    @Transactional
    public int batchSaveRolePermissions(Long roleId, String templateTable, List<RoleTalentPermission> permissions)
    {
        // 先删除该角色在该模板表的所有权限
        roleTalentPermissionMapper.deletePermissionsByRoleAndTable(roleId, templateTable);

        // 批量插入新权限
        if (permissions != null && !permissions.isEmpty())
        {
            return roleTalentPermissionMapper.batchInsertRoleTalentPermission(permissions);
        }

        return 0;
    }
}

